1. Field of the Invention
The present invention relates to a method of driving a wireless communications system to trigger a reset procedure, and more specifically, to a method and an apparatus of controlling a reset procedure in a wireless communications system.
2. Description of the Prior Art
Many communications protocols typically utilize a three-layered approach to communications. Please refer to FIG. 1, which is a block diagram of the three layers in such a prior art communications protocol. In a typical wireless environment, a first station 10 is in wireless communications with one or more second stations 30. An application 13 on the first station 10 composes a message 11 and has it delivered to the second station 20 by handing the message 11 to a layer 3 interface 12. The layer 3 interface 12 then delivers the message 11 to a layer 2 interface 16 in the form of layer 2 service data units (SDUs) 14. The layer 2 SDUs 14 may be of any length. The layer 2 interface 16 comprises a radio link control (RLC) layer 18 on top of a medium access control (MAC) layer 20, and in communications with the medium access control layer 20. The RLC layer 18 supports many functions such as the flow control, the sequence number check, and the ciphering. The MAC layer 20 acts as an interface between the RLC layer 18 and the layer 1 interface 22. From an upper-layer perspective (the RLC layer 18 and higher layers), many channels may be established. Functionally, however, these channels must be consolidated into a single stream for presentation to the layer 1 interface 22. This is one of the main purposes of the MAC layer 20. Therefore, the MAC layer 20 outputs the PDUs arranged in a single stream to the layer 1 interface 22. In other words, the layer 2 interface 16 composes the SDUs 14 into one or more layer 2 protocol data units (PDUs) 24. Each layer 2 PDU 24 is of a fixed length, and is delivered to the layer 1 interface 22.
The layer 1 interface 22 is the physical layer used for transmitting data to the second station 30. The transmitted data is received by the layer 1 interface 42 of the second station 30 and reconstructed into one or more PDUs 44, which are passed up to the layer 2 interface 36. The layer 2 interface 36 also includes a RLC layer 38 and a MAC layer 40. The MAC layer 40 receives the incoming PDUs 44, and dispatches these PDUs 44 to each channels. The RLC layer 38 then assembles one or more layer 2 SDUs 34 according to the PDUs 44 dispatched from the MAC layer 40. Then, the layer 2 SDUs 34 are passed up to the layer 3 interface 32. The layer 3 interface 32, in turn, converts the layer 2 SDUs 34 back into a message 31, which should be identical to the original message 11 that was generated by the application 13 on the first station 10.In the end, the received message 31 is passed to an application 33 on the second station 30.
In a noisy environment of wireless transmissions, a receiver, such as a base station or a mobile unit, often misses data. That is, some layer 2 PDUs 24 will therefore be missing. Thus, wireless protocols are carefully designed to address such problems. It is well-known that each PDU has a specific sequence number, and the PDUs are sequentially numbered. The RLC layers 18, 38 are capable of utilizing the sequence numbers of the PDUs to detect if one PDU is erroneously transmitted or received. As specified in the 3GPP TS 25.322 V4.9.0 (2003-6) Radio Link Control (RLC) protocol specification, a sender enables a polling function to request a peer receiver for a status report. In other words, the receiver transmits status reports to the corresponding sender to inform the sender about which PDUs have been received and not received. Each status report consists of one or several STATUS PDUs. Please note that the status report can also be carried by piggybacked STATUS PDUs embedded within DATA PDUs.
Furthermore, if the receiver detects one or several missing PDUs, it can trigger the transmission of a status report to the sender. In addition, the receiver can also trigger the transmission of a status report to the sender when a timer Timer_Status_Periodic expires. In other words, the receiver is capable of triggering the transmission of a status report to the sender periodically. Both the STATUS PDU and the Piggybacked STATUS PDU have a similar data structure, and they include a plurality of super fields (SUFIs). The SUFIs contain useful sequence number (SN) information used by the sender to determine if the receiver correctly receives the PDUs outputted from the sender. For example, the LIST, BITMAP or RLIST SUFIs can be used to indicate negatively acknowledged sequence numbers. ACK SUFI with a LSN field can be used to indicate that SN<=LSN 1 is positively acknowledged unless this SN is negatively acknowledged in the same STATUS PDU or Piggybacked STATUS PDU.
In addition, both the receiver and the sender have windows within which they expect to receive the PDUs and transmit the PDUs. The sender has a transmitting window that is delimited by two state variables: VT(A) and VT(MS). VT(A) marks the beginning of the transmitting window, and VT(MS) marks the end of the transmitting window. The sender will only transmit PDUs that have sequence numbers within the range of the transmitting window, i.e., that are sequentially on or after VT(A), and are sequentially before VT(MS). The sender has an additional state variable VT(S). When the sender begins transmitting the PDUs that lie within the transmitting window, the sender begins with a PDU having a sequence number given by the state variable VT(A), and works sequentially forward until it reaches a PDU having a sequence number that is just prior to VT(MS). That is, the sender transmits the PDUs in sequence, beginning at VT(A) and ending at VT(MS)1. The state variable VT(S) holds the sequence number of the next new PDU to be transmitted. Thus, the PDUs with sequence numbers on or sequentially before VT(S)-1 have been transmitted at least one time.
Therefore, PDUs with sequence numbers on or after VT(S) have not yet been transmitted by the sender. Suppose that the sender receives a STATUS PDU from the peer receiver, and reads a LIST, BITMAP or RLIST SUFI within the STATUS PDU. When a negatively acknowledged sequence number indicated by the LIST, BITMAP or RLIST SUFI is outside an interval delimited by VT(A) and VT(S)-1, the STATUS PDU is regarded to include an erroneous sequence number. In addition, when the value of the LSN field in an ACK SUFI is outside an interval delimited by VT(A) and VT(S), the STATUS PDU is also regarded to include an erroneous sequence number. Based on the prior art RLC specification, the sender discards the STATUS PDU or the Piggybacked STATUS PDU including the erroneous sequence number, and outputs a RESET PDU to the receiver for activating a corresponding reset procedure.
Please refer to FIG. 2, which is a first timing diagram illustrating the prior art reset procedure. In FIG. 2, the transmission delay between the sender and the receiver is neglected for simplicity. The state variable VT(RST) is used to count the number of times for the RESET PDUs outputted from the sender to the receiver before the reset procedure is completed. VT(RST) functions as a count value, and is increased by 1 each time a RESET PDU is scheduled to be transferred, and is reset when the sender receives a RESET ACK PDU from the receiver. In addition, an initial value of the VT(RST) is equal to 0. A protocol parameter MaxRST stands for an upper threshold of the VT(RST). If VT(RST) equals MaxRST, the sender informs upper layers about an unrecoverable error to release the radio bearer. That is, the maximum number of transmissions of the transmitted RESET PDU is equal to MaxRST-1. Two timers Timer_Status_Periodic and Timer_RST are involved in the reset procedure. The timer Timer_RST is started when a RESET PDU is transferred from the sender to the receiver. However, if the timer Timer_RST expires, the RESET PDU is transmitted again to the receiver. Concerning another timer Timer_Status_Periodic, it is used to trigger the receiver to deliver status reports to the sender periodically. Therefore, if the timer Timer_Status_Periodic expires, the receiver outputs a status report containing STATUS PDUs to the sender, and the timer Timer_Status_Periodic is restarted. As shown in FIG. 2, the state variable VT(RST) stores the initial value equaling 0 before the reset procedure is activated. In addition, the timer Timer_Status_Periodic is started when the receiver is successfully configured for receiving PDUs. Therefore, the timer Timer_Status_Periodic starts working before the reset procedure is activated.
Suppose that the timer Timer_RST is used to count a clocked period equal to 100 ms, and the protocol parameter MaxRST is set to 4. At t0, the receiver is triggered to output a status report to the sender. However, because of protocol error or transmission error, the sender receives this STATUS PDU at t0 and decides that the STATUS PDU contains an erroneous sequence number. Therefore, the sender outputs a RESET PDU to the receiver for activating the reset procedure, and waits for the RESET ACK PDU delivered from the receiver. The timer Timer_RST is started to count the clocked period (100 ms). In addition, the state variable VT(RST) is incremented by 1, and stores 1 at t0.
At t0+100, the timer Timer_RST expires and the wanted RESET ACK PDU is not received. Therefore, the sender retransmits the RESET PDU to the receiver, and continues waiting for the wanted RESET ACK PDU. The state variable VT(RST) is further increased by 1, and keeps 2 at t0+100. Similarly, the timer Timer_RST will expire at t0+200. Suppose that the wanted RESET ACK PDU is not received still. Then, the sender retransmits the RESET PDU to the receiver, and continues waiting for the wanted RESET ACK PDU. The state variable VT(RST) is further increased by 1, and keeps 3 at t0+200.
Please note that the timer Timer_Status_Periodic expires at T′ that is between t0+200 and t0+300. Therefore, the receiver is triggered to output a status report to the sender with the same content as the previous STATUS PDU. Again, the sender receives the STATUS PDU and decides it contains an erroneous sequence number at T′. When the RESET PDU is scheduled to be transferred at T′, the state variable VT(RST) is increased by 1, and stores 4 at T′. At this time, the state variable VT(RST) stores a value equaling the protocol parameter MaxRST. Therefore, the sender indicates an unrecoverable error to the upper layers at T′, and the radio bearer is accordingly released.
Because the protocol parameter MaxRST is set to 4, the sender gives the receiver 3 chances to respond a RESET ACK PDU. In other words, the sender originally permits the receiver to respond within 300 ms. If the receiver can respond the RESET ACK PDU before t0+300, the sender will be able to restart data transmission between the sender and the receiver after resetting protocol parameters. However, the timer Timer_Status_Periodic triggers the receiver to respond the periodic status report before t0+300, and the reset procedure is terminated at T′. It is possible that the receiver responds the RESET ACK PDU at T″ between T′ and t0+300. However, the sender cannot restart data transmission between the sender and the receiver because an unrecoverable error has been indicated to the upper layers at T′ and the radio bearer will be released according to the prior art reset procedure. That is, the operation of the timer Timer_Status_Periodic impedes the functionality of the defined protocol parameter MaxRST.
Please refer to FIG. 3, which is a second timing diagram illustrating the prior art reset procedure. Same as FIG. 2, the transmission delay between the sender and the receiver is neglected in FIG. 3 for simplicity. Suppose that the timer Timer_RST is used to count a clocked period equal to 700 ms, timer Timer_Status_Period is used to count a clocked period equal to 100 ms, and the protocol parameter MaxRST is set to 4. At t0, the timer Timer_Status_Period expires, and the receiver is triggered to output a status report to inform the sender of the PDU receiving status. Suppose that the sender receives this status report at t0 and finds it contains an erroneous sequence number. Therefore, the sender outputs a RESET PDU to the receiver at t0 for activating the reset procedure, and waits for the RESET ACK PDU delivered from the receiver. The timer Timer_RST is started to count the clocked period (700 ms), and the state variable VT(RST) is incremented by 1 to store 1. At t0+100, the timer Timer_Status_Period expires. The receiver sends a status report to the sender with the same content of the previous status report since there is no data PDUs sent by the sender during this period. The sender determines there is an erroneous sequence number in the status report again. Therefore, the sender retransmits the RESET PDU to the receiver, and continues waiting for the wanted RESET ACK PDU. The state variable VT(RST) is further increased by 1, and keeps 2 at t0+100. Similarly, the timer Timer_Status_Periodic will expire at t0+200. The receiver sends a status report, which is considered as containing an erroneous sequence number again by the sender. Thus, the sender retransmits the RESET PDU to the receiver, and continues waiting for the wanted RESET ACK PDU. The state variable VT(RST) is further increased by 1, and keeps 3 at t0+200.
Similarly, the timer Timer_Status_Periodic expires at t0+300. Again, the receiver is triggered to output a status report with exactly the same content as before. Therefore, the sender receives the status report and determines that it includes an erroneous sequence number at t0+300. When the RESET PDU is scheduled to be transferred at t0+300, the state variable VT(RST) is increased by 1, and stores 4 at t0+300. At this time, the state variable VT(RST) stores a value equaling the protocol parameter MaxRST. Therefore, the sender indicates an unrecoverable error to the upper layers at t0+300, and the radio bearer is accordingly released. Please note that the sender originally permits the receiver to respond the RESET ACK PDU within 3*700 ms. If the receiver can respond the RESET ACK PDU before t0+'*700 ms, the sender will be able to restart data transmission between the sender and the receiver. However, the timer Timer_Status_Periodic triggers the receiver to respond the unexpected status reports, and an unrecoverable error is indicated to the upper layers earlier than the expected t0+'*700 at the sender. It is possible that the receiver responds the RESET ACK PDU after t0+300. However, an unrecoverable error has been reported to upper layers prematurely to release the radio bearer according to the prior art reset procedure. That is, the operation of the timer Timer_Status_Periodic impedes the correct functionality of the defined protocol parameter MaxRST.